import java.util.*;

/**
 * @author LKQ
 * @date 2022/4/5 14:43
 * @description 排列问题，将所有可能的排列转换为可能的时间，如果符合要求，且时间更大，那么更新时间
 */
public class Solution {
    public static void main(String[] args) {

    }
    public String largestTimeFromDigits(int[] A) {
        int ans = -1;
        // A的长度只有四，用每一个
        for (int i = 0; i < 4; ++i) {
            if (A[i] > 2) {
                continue;
            }
            for (int j = 0; j < 4; ++j) {
                if (j != i) {
                    for (int k = 0; k < 4; ++k) {
                        if (A[k] > 5) {
                            continue;
                        }
                        if (k != i && k != j) {
                            int l = 6 - i - j - k;
                            int hours = 10 * A[i] + A[j];
                            int mins = 10 * A[k] + A[l];
                            if (hours < 24 && mins < 60) {
                                ans = Math.max(ans, hours * 60 + mins);
                            }
                        }
                    }
                }
            }
        }
        return ans >= 0 ? String.format("%02d:%02d", ans / 60, ans % 60) : "";

    }
}
